<?php

namespace SisesporteAdmin\Form;

use \Zend\Form\Form;

class CadastrarEstagiarioForm extends Form {

    protected $entity;

    public function __construct($entity = NULL) {
        parent::__construct('professor');
        $this->entity = $entity;

        $this->setAttribute('method', 'post');
        //$this->setInputFilter(new ProfessorFilter());

        $this->add(array(
            'name' => 'noPessoa',
            'options' => array(
                'type' => 'text',
                'label' => 'Nome Completo*:'
            ),
            'attributes' => array(
                'id' => 'noPessoa',
                'class' => 'input-xxlarge'
            )
        ));

        $this->add(array(
            'type' => 'Zend\Form\Element\File',
            'name' => 'txCaminhoFoto',
            'options' => array(
                'label' => 'Imagem:'
            ),
            'attributes' => array(
                'id' => 'txCaminhoFoto'
            )
        ));

//        $noImagem = new \Zend\Form\Element\File('noImagem');
//        $noImagem->setLabel('Imagem:')
//                ->setAttribute('id', 'noImagem')
//                ->setName('noImagem');
//        $this->add($noImagem);

        $this->add(array(
            'name' => 'dtNascimento',
            'options' => array(
                'type' => 'text',
                'label' => 'Data de Nascimento*:'
            ),
            'attributes' => array(
                'id' => 'dtNascimento',
                'class' => 'input-medium'
            )
        ));

        $this->add(array(
            'name' => 'nuCpf',
            'options' => array(
                'type' => 'text',
                'label' => 'CPF:'
            ),
            'attributes' => array(
                'id' => 'nuCpf',
                'class' => 'input-large'
            )
        ));

        $this->add(array(
            'name' => 'nuIdentidade',
            'options' => array(
                'type' => 'text',
                'label' => 'Identidade*:'
            ),
            'attributes' => array(
                'id' => 'nuIdentidade',
                'class' => 'input-medium'
            )
        ));

        $this->add(array(
            'type' => 'Zend\Form\Element\Select',
            'name' => 'sqOrgaoExpIdentidade',
            'options' => array(
                'label' => 'Órgão Expedidor:',
                'empty_option' => '-- Selecione --',
                'value_options' => $this->getResultArray('Sisesporte\Entity\OrgaoExpedidor'),
            ),
            'attributes' => array(
                'id' => 'sqOrgaoExpIdentidade'
            )
        ));

        $this->add(array(
            'type' => 'Zend\Form\Element\Select',
            'name' => 'sqUfOrgExpedidor',
            'options' => array(
                'label' => 'UF:',
                'empty_option' => '-- Selecione --',
                'value_options' => $this->getResultArray('Sisesporte\Entity\Uf'),
            ),
            'attributes' => array(
                'id' => 'sqUfOrgExpedidor'
            )
        ));

        $this->add(array(
            'type' => 'Zend\Form\Element\Select',
            'name' => 'sqUfCref',
            'options' => array(
                'label' => 'UF*:',
                'empty_option' => '-- Selecione --',
                'value_options' => $this->getResultArray('Sisesporte\Entity\Uf'),
            ),
            'attributes' => array(
                'id' => 'sqUfCref'
            )
        ));

        $this->add(array(
            'type' => 'Zend\Form\Element\Select',
            'name' => 'sqUf',
            'options' => array(
                'label' => 'UF*:',
                'empty_option' => '-- Selecione --',
                'value_options' => $this->getResultArray('Sisesporte\Entity\Uf'),
            ),
            'attributes' => array(
                'id' => 'sqUf'
            )
        ));

        $this->add(array(
            'name' => 'dtExpedicao',
            'options' => array(
                'type' => 'text',
                'label' => 'Data de Expedição:'
            ),
            'attributes' => array(
                'id' => 'dtExpedicao',
                'class' => 'input-medium'
            )
        ));

        $this->add(array(
            'name' => 'nuCep',
            'options' => array(
                'type' => 'text',
                'label' => 'CEP*:'
            ),
            'attributes' => array(
                'id' => 'nuCep',
                'class' => 'input-medium'
            )
        ));

        $this->add(array(
            'name' => 'noEndereco',
            'options' => array(
                'type' => 'text',
                'label' => 'Endereço:'
            ),
            'attributes' => array(
                'id' => 'noEndereco',
                'class' => 'input-large'
            )
        ));

        $this->add(array(
            'name' => 'noComplemento',
            'options' => array(
                'type' => 'text',
                'label' => 'Complemento:'
            ),
            'attributes' => array(
                'id' => 'noComplemento',
                'class' => 'input-xxlarge'
            )
        ));

        $this->add(array(
            'name' => 'noBairro',
            'options' => array(
                'type' => 'text',
                'label' => 'Bairro:'
            ),
            'attributes' => array(
                'id' => 'noBairro',
                'class' => 'input-large'
            )
        ));

        $this->add(array(
            'type' => 'Zend\Form\Element\Select',
            'name' => 'sqCidade',
            'options' => array(
                'label' => 'Cidade:',
                'empty_option' => '-- Selecione --',
                'value_options' => array(),
            ),
            'attributes' => array(
                'id' => 'sqCidade'
            )
        ));

        $this->add(array(
            'name' => 'noTelefoneFixo',
            'options' => array(
                'type' => 'text',
                'label' => 'Telefone Fixo*:'
            ),
            'attributes' => array(
                'id' => 'noTelefoneFixo',
                'class' => 'input-large'
            )
        ));

        $this->add(array(
            'name' => 'noTelefoneMovel',
            'options' => array(
                'type' => 'text',
                'label' => 'Telefone Móvel:'
            ),
            'attributes' => array(
                'id' => 'noTelefoneMovel',
                'class' => 'input-large'
            )
        ));

        $this->add(array(
            'name' => 'noEmail',
            'options' => array(
                'type' => 'email',
                'label' => 'E-mail*:'
            ),
            'attributes' => array(
                'id' => 'noEmail',
                'class' => 'input-xxlarge'
            )
        ));

        $this->add(array(
            'name' => 'noConfirmaEmail',
            'options' => array(
                'type' => 'email',
                'label' => 'Confirmar E-mail*:'
            ),
            'attributes' => array(
                'id' => 'noConfirmaEmail',
                'class' => 'input-xxlarge'
            )
        ));


        $this->add(array(
            'name' => 'noMae',
            'options' => array(
                'type' => 'text',
                'label' => 'Nome da mãe*:'
            ),
            'attributes' => array(
                'id' => 'noMae',
                'class' => 'input-xxlarge'
            )
        ));

        $this->add(array(
            'name' => 'noPai',
            'options' => array(
                'type' => 'text',
                'label' => 'Nome do Pai*:'
            ),
            'attributes' => array(
                'id' => 'noPai',
                'class' => 'input-xxlarge'
            )
        ));

        $this->add(array(
            'type' => 'Zend\Form\Element\Select',
            'name' => 'sqEstadoCivil',
            'options' => array(
                'label' => 'Estado Civil*:',
                'empty_option' => '-- Selecione --',
                'value_options' => $this->getResultArray('Sisesporte\Entity\EstadoCivil'),
            ),
            'attributes' => array(
                'id' => 'sqEstadoCivil'
            )
        ));

        $this->add(array(
            'type' => 'Zend\Form\Element\Radio',
            'name' => 'inSexo',
            'options' => array(
                'label' => 'Sexo:',
                'value_options' => array(
                    'M' => 'Masculino',
                    'F' => 'Feminino',
                ),
            )
        ));
        $this->add(array(
            'name' => 'nuFilho',
            'options' => array(
                'type' => 'text',
                'label' => 'Quantidade de Filhos*:'
            ),
            'attributes' => array(
                'id' => 'nuFilho',
                'class' => 'input-mini'
            )
        ));

        $this->add(array(
            'name' => 'noContato',
            'options' => array(
                'type' => 'text',
                'label' => 'Em caso de emergência avisar*:'
            ),
            'attributes' => array(
                'id' => 'noResponsavelR',
                'class' => 'input-xlarge'
            )
        ));

        $this->add(array(
            'name' => 'noTelefone',
            'options' => array(
                'type' => 'text',
                'label' => 'Telefone*:'
            ),
            'attributes' => array(
                'id' => 'noTelefone',
                'class' => 'input-medium'
            )
        ));

        $this->add(array(
            'name' => 'noTelefoneR',
            'options' => array(
                'type' => 'text',
                'label' => 'Telefone:'
            ),
            'attributes' => array(
                'id' => 'noTelefoneR',
                'class' => 'input-medium'
            )
        ));

        $this->add(array(
            'type' => 'Zend\Form\Element\Select',
            'name' => 'nuCargaHoraria',
            'options' => array(
                'label' => 'Carga Horária*:',
                'empty_option' => '-- Selecione --',
                           'value_options' => array(
                               20 => '20hs',
                               30 => '30hs',
                               40 => '40hs',
                           ),
            ),
            'attributes' => array(
                'id' => 'nuCargaHoraria'
            )
        ));

        $this->add(array(
                'name' => 'noEmpresa',
                'options' => array(
                        'type' => 'text',
                        'label' => 'Empresa responsável pelo estagiário:*'
                ),
                'attributes' => array(
                        'id' => 'noEmpresa',
                        'class' => 'input-xxlarge'
                )
        ));

        $this->add(array(
                'type' => 'Zend\Form\Element\Select',
                'name' => 'nuCargaHoraria',
                'options' => array(
                        'label' => 'Carga Horária*:',
                        'empty_option' => '-- Selecione --',
                ),
                'attributes' => array(
                        'id' => 'nuCargaHoraria'
                )
        ));

        $this->add(array(
                'type' => 'Zend\Form\Element\Select',
                'name' => 'sqInstituicaoEnsino',
                'options' => array(
                        'label' => 'Instituição de Ensino*:',
                        'empty_option' => '-- Selecione --',
                ),
                'attributes' => array(
                        'id' => 'sqInstituicaoEnsino'
                )
        ));

        $this->add(array(
                'name' => 'noCurso',
                'options' => array(
                        'type' => 'text',
                        'label' => 'Curso:'
                ),
                'attributes' => array(
                        'id' => 'noCurso',
                        'class' => 'input-large'
                )
        ));

        $this->add(array(
                'name' => 'nuSemestre',
                'options' => array(
                        'type' => 'text',
                        'label' => 'Semestre:'
                ),
                'attributes' => array(
                        'id' => 'nuSemestre',
                        'class' => 'input-medium'
                )
        ));

        $this->add(array(
                'type' => 'Zend\Form\Element\Select',
                'name' => 'nuTurno',
                'options' => array(
                        'label' => 'Turno:',
                        'empty_option' => '-- Selecione --',
                ),
                'attributes' => array(
                        'id' => 'nuTurno'
                )
        ));

        $this->add(array(
                'name' => 'dtInicioContrato',
                'options' => array(
                        'type' => 'text',
                        'label' => 'Data Início do Contrato:'
                ),
                'attributes' => array(
                        'id' => 'dtInicioContrato',
                        'class' => 'input-medium'
                )
        ));

        $this->add(array(
                'name' => 'dtFimContrato',
                'options' => array(
                        'type' => 'text',
                        'label' => 'Data Fim do Contrato:'
                ),
                'attributes' => array(
                        'id' => 'dtFimContrato',
                        'class' => 'input-medium'
                )
        ));

        $this->add(array(
                'name' => 'dtInicioContrato',
                'options' => array(
                        'type' => 'text',
                        'label' => 'Data Renovação 1:'
                ),
                'attributes' => array(
                        'id' => 'dtInicioContrato',
                        'class' => 'input-medium'
                )
        ));

        $this->add(array(
                'name' => 'dtInicioContrato',
                'options' => array(
                        'type' => 'text',
                        'label' => 'Data Renovação 2:'
                ),
                'attributes' => array(
                        'id' => 'dtInicioContrato',
                        'class' => 'input-medium'
                )
        ));

        $this->add(array(
                'name' => 'dtInicioContrato',
                'options' => array(
                        'type' => 'text',
                        'label' => 'Data Renovação 3:'
                ),
                'attributes' => array(
                        'id' => 'dtInicioContrato',
                        'class' => 'input-medium'
                )
        ));

        $this->add(array(
                'type' => 'Zend\Form\Element\Select',
                'name' => 'sqPessoaSupervisor',
                'options' => array(
                        'label' => 'Supervisor do Contrato:',
                        'empty_option' => '-- Selecione --',
                ),
                'attributes' => array(
                        'id' => 'sqPessoaSupervisor'
                )
        ));

        $this->add(array(
                'name' => 'noCref',
                'options' => array(
                        'type' => 'text',
                        'label' => 'Registro no CREF:'
                ),
                'attributes' => array(
                        'id' => 'noCref',
                        'class' => 'input-medium'
                )
        ));

        $this->add(array(
                'name' => 'txObservacao',
                'type' => 'Textarea',
                'options' => array(
                        'label' => 'OBS:',

                ),
                'attributes' => array(
                        'id' => 'txObservacao',
                        'rows'=>'6',
                        'cols'=>'10',
                        'style'=>'width: 80%; height: 80%'
                )
        ));


        $this->add(array(
            'name' => 'noCref',
            'options' => array(
                'type' => 'text',
                'label' => 'Registro CREF*:'
            ),
            'attributes' => array(
                'id' => 'noCref',
                'class' => 'input-medium'
            )
        ));

        $this->add(array(
            'name' => 'txObservacao',
            'type' => 'Textarea',
            'options' => array(
                'label' => 'OBS:',
            ),
            'attributes' => array(
                'id' => 'txObservacao',
                'rows' => '6',
                'cols' => '10',
                'style' => 'width: 88%; height: 20%'
            )
        ));

        $this->add(array(
            'name' => 'salvar',
            'type' => 'Zend\Form\Element\Submit',
            'attributes' => array(
                'value' => 'Salvar',
                'title' => 'Salvar',
                'class' => 'btn btn-primary pull-right'
            )
        ));

        $this->add(array(
            'type' => 'Zend\Form\Element\Select',
            'name' => 'sqUfDadosPessoais',
            'options' => array(
                'label' => 'UF*:',
                'empty_option' => '-- Selecione --',
                'value_options' => $this->getResultArray('Sisesporte\Entity\Uf'),
            ),
            'attributes' => array(
                'id' => 'sqUfDadosPessoais'
            )
        ));

        $this->add(array(
            'type' => 'Zend\Form\Element\Select',
            'name' => 'sqCidadeDadosPessoais',
            'options' => array(
                'label' => 'Cidade:',
                'empty_option' => '-- Selecione uma UF --',
            ),
            'attributes' => array(
                'id' => 'sqCidadeDadosPessoais'
            )
        ));

        $this->add(array(
            'type' => 'Zend\Form\Element\Hidden',
            'name' => 'sqCidadeDadosPessoaisH',
            'attributes' => array(
                'id' => 'sqCidadeDadosPessoaisH'
            )
        ));

        $this->add(array(
            'type' => 'Zend\Form\Element\Hidden',
            'name' => 'sqCidadeH',
            'attributes' => array(
                'id' => 'sqCidadeH'
            )
        ));

        $this->add(array(
            'type' => 'Zend\Form\Element\MultiCheckbox',
            'name' => 'sqModalidade',
            'options' => array(
                'label' => 'Modalidades*',
                'value_options' => $this->getResultArray('Sisesporte\Entity\Modalidade'),
            )
        ));

        $this->add(array(
            'name' => 'cancelar',
            'type' => 'Zend\Form\Element\Submit',
            'attributes' => array(
                'value' => 'Cancelar',
                'title' => 'Cancelar',
                'class' => 'btn btn-primary pull-right'
            )
        ));
    }

    /**
     * @return array
     */
    protected function getResultArray($repository) {
        $repo = $this->entity->getRepository($repository);
        return $repo->fetchPairs();
    }

    public function setDefaultsFromEntity(Pessoa $obj) {
        $repoEndereco = $this->entity->getRepository("Sisesporte\Entity\Endereco");
        $objEndereco = $repoEndereco->findby(array('sqPessoa' => $obj->getSqPessoa()));

        $repoCidade = $this->entity->getRepository("Sisesporte\Entity\Cidade");
        $objCidade = $repoCidade->findby(array('sqCidade' => $objEndereco[0]->getSqCidade()->getSqCidade()));

        $repoT = $this->entity->getRepository("Sisesporte\Entity\Telefone");
        $objTelefone = $repoT->findby(array('sqPessoa' => $obj->getSqPessoa()), NULL);

//        echo '<pre>';
//        var_dump($objEndereco[0]->getSqCidade());
//        echo '</pre>';
//                exit;

        $utils = new Utils();
        $this->setData(array(
            'noPessoa' => strtoupper($obj->getNoPessoa()),
            'dtNascimento' => $obj->getDtNascimento(),
            'nuCpf' => $utils->formatarCpfCnpj($obj->getNuCpf(), TRUE),
            'nuIdentidade' => $obj->getNuIdentidade(),
            'sqOrgaoExpIdentidade' => $obj->getSqOrgaoExpIdentidade()->getSqOrgaoExpedidor(),
            'sqUfOrgExpedidor' => $obj->getSqUfOrgExpedidor()->getSqUf(),
            'dtExpedicao' => $obj->getDtExpedicao(),
            'sqEstadoCivil' => $obj->getSqEstadoCivil()->getSqEstadoCivil(),
            'inSexo' => ($obj->getInSexo()),
            'nuFilho' => ($obj->getNuFilho()=="")?"0":$obj->getNuFilho(),
            'sqUfDadosPessoais' => $obj->getSqUfNaturalidade()->getSqUf(),
            'sqCidadeDadosPessoais' => $obj->getSqCidadeNaturalidade()->getSqCidade(),
            'sqCidadeDadosPessoaisH' => $obj->getSqCidadeNaturalidade()->getSqCidade(),
            'noMae' => strtoupper($obj->getNoMae()),
            'noPai' => strtoupper($obj->getNoPai()),
            'nuCep' => strtoupper($objEndereco[0]->getNuCep()),
            'noEndereco' => strtoupper($objEndereco[0]->getNoEndereco()),
            'noComplemento' => strtoupper($objEndereco[0]->getNoComplemento()),
            'noBairro' => strtoupper($objEndereco[0]->getNoBairro()),
            'sqUf' => $objCidade[0]->getSqUf(),
            'sqCidade' => $objEndereco[0]->getSqCidade()->getSqCidade(),
            'sqCidadeH' => $objEndereco[0]->getSqCidade()->getSqCidade(),
            'noTelefoneFixo' => '(061) 3532-2551',
            'noTelefoneMovel' => '(061) 8237-9200',
            'noEmail' => 'jairforo@gmail.com',
            'noContato' => 'MARIA DA SILVA E SILVA',
            'noTelefone' => '(061) 8237-920',
            'deEspecialidade' => 'ARQUITETO',
            'coMatricula' => '12345678-9',
            'nuCargaHoraria' => '20HS',
            'noLotacao' => 'CONFIDERE IT',
            'coOrgaoAdmissao' => 'SESP',
            'sqGrauEscolaridade' => 'PÓS-GRADUACAO',
            'dtInicioSesp' => '03/07/1989',
            'dtInicioAdmissao' => '03/07/1989',
            'dtFinalAdmissao' => '03/07/1989',
            'categoriaCref' => 'CATEGORIA',
            'sqUfCref' => 'DF',
            'dtExpedicaoCref' => '03/07/1989',
            'dtValidadeCref' => '03/07/1989',
            'deCategoriaCref' => 'de CATEGORIA',
            'deAtuacaoCref' => 'ATUACAO',
        ));
    }

}
